package com.xiyuan.smartutils.paging;

import java.util.List;

/**
 * IPage
 *
 * @author xiyuan-lgz 2023-11-02 @version v1.0.0 新建与整理
 */
public interface IPage<T> {
    
    /**
     * 获取页码 最小1
     *
     * @return 返回页码
     */
    public long getPageNo();
    
    /**
     * 获取页码大小
     *
     * @return 页码大小
     */
    public long getPageSize();
    
    /**
     * 获取当前页数据列表
     *
     * @return 数据列表
     */
    public List<T> items();
    
    /**
     * 获取整个数据条目数量
     *
     * @return 数据条目
     */
    
    public long total();
    
    
    /**
     * 是否有上一页
     *
     * @return true|false
     */
    public boolean hasPrev();
    
    /**
     * 是否有下一页
     *
     * @return true|false
     */
    public boolean hasNext();
    
    /**
     * 设置当前页码 最小1
     *
     * @param pageNo 页码
     * @return
     */
    public PageResult<T> setPageNo(long pageNo);
    
    public PageResult<T> setPageNo(int pageNo);
    
    /**
     * 设置页码容量 最小1,
     *
     * @param pageSize 页码容量
     * @return
     */
    public PageResult<T> setPageSize(long pageSize);
    
    /**
     * 设置当前页 数据列表
     *
     * @param list 列表数据
     */
    public PageResult<T> setItems(List<T> list);
    
    /**
     * 设置从条目
     *
     * @param total 总条目
     */
    public PageResult<T> setTotal(long total);
    
}
